"""
A公司和B公司有n个合作的子项目，每个子项目由A公司和B公司各一名员工参与。一名员工可以参与多个子项目。
一个员工如果担任了该项目的项目经理，它需要对所参与的该项目负责。一个员工也可以负责多个项目。
A公司和B公司需要保证所有子项目都能有人负责，问最少需要指定几名项目经理？

输入数据：
第一行为A公司的员工id
第二行为B公司的员工id
第三行为项目数量n
接下来每行为A,B公司各一个员工的id，可参与合作关系

示例：
0 1 3
2 4 5
3
1 2
1 4
0 4
0 5
3 2
"""


if __name__ == '__main__':
    def dfs(x, graph_dict, visited, left):
        b_members = graph_dict[x]
        for b_m in b_members:  # 同一次 增广路寻找中，若v曾经被达到过，则跳过。
            if visited[b_m] == 0:  # 若x能到达的 右部结点 b_m 为非匹配点，则找到了一条长度为1的增广路，记：left[b_m] = x
                visited[b_m] = 1
                if b_m not in left.keys():
                    left[b_m] = x
                    return True
                else:
                    # 若 b_m 为匹配点，则递归的从left[b_m]出发寻找增广路，回溯时记：left[b_m] = x
                    dfs(left[b_m], graph_dict, visited, left)
                    left[b_m] = x
                    return True
        return False
    
    ### ACM 模式输入处理 ###
    #** input() 以字符串的方式获取用户输入【分行获得】
    #** a_company = list(map(int, input().split(' ')))
    #** b_company = list(map(int, input().split(' ')))
    #** n = int(input())
    #** projects = []
    #** for _ in range(n):  # n 个合作项目
    #**     tmp = list(map(int, input().split(' ')))
    #**     projects.append(tmp)
    #######################
    
    a_company = [0, 1, 2]
    b_company = [3, 4, 5]
    projects = [[0, 4], [0, 3], [1, 3], [1, 4], [2, 5], [2, 4]]
    graph_dict = {}
    for p in projects:
        if p[0] not in graph_dict.keys():
            graph_dict[p[0]] = []
        graph_dict[p[0]].append(p[1])
    
    # 根据建立的二分图，寻找 最大匹配数 = 最小点覆盖数
    visited = {}  # 记录右部节点是否被匹配过
    for b_m in b_company:
        visited[b_m] = 0
    left = {}  # 匹配右部i点的左部节点
    ans = 0
    for a_m in a_company:  # 从a公司的任一节点出发，依次寻找增广路，并查找返回结果
        if dfs(a_m, graph_dict, visited, left):
            ans += 1
    print(ans)
